<?php
/**
 * Контроллер регионов
 * 
 * Управление регионами
 * @author Anton Zavidov
 * @package myLiveShop
 */

/**
 * Класс контроллера для управления регионами
 *
 */
class ControllerRegion extends Element{
	/**
	 * Констуктор
	 *
	 * @param string $className имя контроллера
	 */
	public function __construct($className=null){
		$this->name='region';
		parent::__construct($className?$className:__CLASS__);
	}
    /**
    * Получить список
    *
    */
    public function regionList(){
        $data=$this->model()->load(false,array(ModelRegion::F_REGION_ID,ModelRegion::F_TITLE),array(
	       'where'=>ModelRegion::F_PARENT_ID . "=" . Requestlocal::getInt(ModelRegion::F_PARENT_ID,0)
	    ));
        if(Core::isJSON() && Requestlocal::getInt('asTable',null)){
            $this->view->setAll($this->view->tablePack($data));
		} else {
			$this->view->set('list', $data);
		}
        $this->build();
    }
	/**
	 * Просмотр елемента
	 *
	 */
	public function show(){
		parent::show();
		$this->view->set('list',$this->model()->load());
        $this->build();
	}
	/**
	 * Просмотр елемента
	 *
	 */
	public function display(){
		parent::display(true);
		pr($this->model()->loadOne($this->id));
	}
	/**
	 * Форма редактирования
	 *
	 */
	public function edit(){
		parent::edit(true);
		Core::mustLogin();
		$this->view->set('element',$this->model()->loadOne($this->id,array(
		  ModelRegion::F_REGION_ID,
		  ModelRegion::F_PARENT_ID,
		  ModelRegion::F_TITLE)));
		$this->build();
	}
	/**
	 * Форма создания
	 *
	 */
	public function add(){
		parent::add();
		Core::mustLogin();
		$this->build();
	}
	/**
	 * Создание
	 *
	 */
	public function save(){
		parent::save();
		Core::mustLogin();
		$result=$this->model()->save(
			array(
				ModelRegion::F_PARENT_ID=>Requestlocal::getInt(ModelRegion::F_PARENT_ID),
				ModelRegion::F_TITLE=>Requestlocal::getString(ModelRegion::F_TITLE)
			),
			Requestlocal::getInt(ModelRegion::F_REGION_ID,null,'post')
		);
		if(!is_array($result)){
			Core::eraseRequest();
			Core::redirect(base64_decode(Requestlocal::getString(Core::REFERER)),T::_('Saved'));
		}
		else {
			Core::setFormErrors($result);
			Core::saveReferer();
			Core::saveRequest();
			Core::redirect(Core::getReferer(true),T::_('Error'));
		}
	}
	/**
	 * Удаление
	 *
	 */
	public function delete(){
		Core::mustLogin();
		parent::delete(false);
		$this->findId(true);
		if($this->id)$this->model()->deleteRecursive($this->id,ModelRegion::F_PARENT_ID);
		Core::redirect(base64_decode(Vars::_(Core::REFERER)),T::_('Deleted'));
	}
}